#ifndef MKAHYPAR_I_INITIAL_PARTITIONER_H
#define MKAHYPAR_I_INITIAL_PARTITIONER_H
namespace mkahypar{
  class IInitialPartitioner {
  public:
    IInitialPartitioner(const IInitialPartitioner&) = delete;
    IInitialPartitioner(IInitialPartitioner&&) = delete;
    IInitialPartitioner& operator= (const IInitialPartitioner&) = delete;
    IInitialPartitioner& operator= (IInitialPartitioner&&) = delete;

    void partition() {
      partitionImpl();
    }

    virtual ~IInitialPartitioner() = default;

  protected:
    IInitialPartitioner() = default;

  private:
    virtual void partitionImpl() = 0;
  };
}
#endif //MKAHYPAR_I_INITIAL_PARTITIONER_H
